#include <iostream>
using namespace std;

// 补充回调函数的定义（原代码中缺失）
int func1() {
    return 100; // 示例返回值
}

int func2() {
    return 200; // 示例返回值
}

void test() {
    typedef int A;  // 无关定义（示例typedef基本用法）
    
    // 1、函数指针的定义方法
    /* typedef int(*)(void) pFunc; */ // 错误语法！正确写法见下
    // typedef int (*pFunc)(); // C风格：定义函数指针类型pFunc（指向"无参返回int"的函数）
    /* using pFunc = int(*)(void); */ // C++11风格：等价于typedef，更直观
    using pFunc = int(*)();
    // 2、函数指针与回调函数的关系（注册 + 执行）
    // 3、延迟调用思想：通过函数指针"延迟"决定执行哪个函数
    
    pFunc f = &func1; // 注册回调函数：f指向func1（&可省略，函数名即地址）
    cout << "=============" << endl;
    cout << "f() = " << f() << endl; // 执行回调函数：调用func1()，输出100
    
    f = func2; // 重新注册：f指向func2（省略&，函数名自动转换为指针）
    cout << "f() = " << f() << endl; // 执行回调函数：调用func2()，输出200
}

int main() {
    test();
    return 0;
}